#include <string>
#include <vector>
using namespace std;
// 2[abc]3[cd]ef

// 基于栈的解法
string decodeString(string s) {
  string res;
  string multi;
  vector<pair<string, int>> stack;
  for (char c : s) {
    if (c >= 'a' && c <= 'z') {
      // 字符
      res += c;
    }
    if (c >= '0' && c <= '9') {
      // 数字
      multi += c;
    }
    if (c == '[') {
      if (multi.empty()) {
        multi += '0';
      }
      stack.push_back({res, stoi(multi)});
      res.clear();
      multi.clear();
    }
    if (c == ']') {
      auto item = stack.back();
      stack.pop_back();
      string t = res;
      res = item.first;
      for (int i = 0; i < item.second; i++) {
        res += t;
      }
    }
  }
  return res;
}

// 基于递归的解法
// 递归求解 k[str] 形式的结果, 如果无k直接返回str
string solver(const string &s, int n) {
  string res;
  int multi = 0;
  while (n < s.size()) {
    if (s[n] > '0' && s[n] <= '9') {
      multi = multi * 10 + s[n++] - '0';
    }
    if (s[n] >= 'a' && s[n] <= 'z') {
      res += s[n++];
    }
    if (s[n] == '[') {
    }
  }
}
